package com.yedean.factory.support;

import com.yedean.factory.io.Resource;
import com.yedean.factory.io.ResourceLoader;

import java.io.InputStream;

/**
 * 读取资源注册到bean定义的接口
 * @author yedean
 * @date 2022/7/7
 */
public interface BeanDefinitionReader {

    /**
     * 获取注册bean定义信息接口的相关实现类
     * 
     * @return
     */
    BeanDefinitionRegistry getRegistry();

    /**
     * 获取资源加载器用来加载资源
     * 
     * @return
     */
    ResourceLoader getResourseLoader();

    /**
     * 具体进行资源加载进beanDefinition的步骤
     * @param resource 资源
     */
    void loadBeanDefinitions(Resource resource);
    /**
     * 具体进行资源加载进beanDefinition的步骤
     * @param resources 资源
     */
    void loadBeanDefinitions(Resource... resources);
    /**
     * 具体进行资源加载进beanDefinition的步骤
     * @param location 路径
     */
    void loadBeanDefinitions(String location);


    /**
     * 真正进行资源的加载然后注册bean定义
     *  
     * @param inputStream 字节输入流
     */
    void doLoadBeanDefinitions(InputStream inputStream) throws ClassNotFoundException;
    
}
